<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        var user={
            name:"clearlove",
            age:27,
            gender:"M",
            favs:["lol","jungle"],
            addr:{
                prov:"江苏省",
                city:"南京市"
            }
        }
        var user1={};

        //关于浅拷贝
        //1、JS中组合继承方式
        // for(let key in user){
        //     // console.log(key);
        //     // console.log(user[key]);
        //     user1[key]=user[key];
        // }
        // // console.dir(user);
        // // console.dir(user1);

        // //2、ES6新增方法,优点是可以同时拷贝多个对象Object.assign(user1,user,.....);
        //     Object.assign(user1,user);
        // // console.dir(user);
        // // console.dir(user1);
        // //3、ES6新增展开方法
        //     user1={...user};
        // console.dir(user);
        // console.dir(user1);


        //关于深拷贝
        //1、利用递归方法1(高配法)
            // function deepCopy(self,target){
            //     for(let key in target){
            //         if(target[key].constructor.name=="Object"){
            //             self[key]={};
            //             deepCopy(self[key],target[key]);
            //         }else if(target[key].constructor.name=="Array"){
            //             self[key]=[];
            //             deepCopy(self[key],target[key]);
            //         }else{
            //             self[key]=target[key];
            //         }
            //     }
            // }
            // deepCopy(user1,user);
            // console.dir(user);
            // console.dir(user1);

        //2、利用递归方法2(高配法)
            // function deepCopy(self,target){
            //     if(target && target.toString()==="[object Object]" || Array.isArray(target)){
            //         for(let key in target){
            //             if(target[key].toString()==="[object Object]"){
            //                 self[key]=deepCopy({},target[key]);
            //                 continue;
            //             }
            //             if(Array.isArray(target[key])){
            //                 self[key]=deepCopy([],target[key]);
            //                 continue;
            //             }
            //             self[key]=target[key];
            //         }
            //         return self;
            //     }
            //     return target;
            // }
            // user1=deepCopy(user1,user);
            // // user1=deepCopy(user1,"aaaa");
            // // user1=deepCopy(user1,null);
            // console.dir(user);
            // console.dir(user1);

        //3、利用JSON方法(低配法)
            user1=JSON.parse(JSON.stringify(user));
            console.dir(user);
            console.dir(user1);
    </script>
</head>
<body>
    
</body>
</html>